<?php

namespace app\admin\model;

use think\Model;

/**
 * 商品模型
 */
class Product extends Model
{
    // 表名
    protected $name = 'product';
    
    // 自动写入时间戳字段
    protected $autoWriteTimestamp = 'int';
    
    // 定义时间戳字段名
    protected $createTime = 'createtime';
    protected $updateTime = 'updatetime';
    
    // 追加属性
    protected $append = [
        'status_text'
    ];
    
    // 状态映射
    public static $statusList = [
        'normal' => '正常',
        'hidden' => '隐藏'
    ];
    
    public function getStatusTextAttr($value, $data)
    {
        return self::$statusList[$data['status']] ?? '';
    }
    
    /**
     * 获取商品列表
     * @param array $params 查询参数
     * @return \think\Paginator
     */
    public static function getList($params = [])
    {
        $query = self::order('id', 'desc');
        
        // 商品名称搜索
        if (isset($params['product_name']) && $params['product_name'] !== '') {
            $query->where('product_name', 'like', '%' . $params['product_name'] . '%');
        }
        
        // 单价范围搜索
        if (isset($params['unit_price_min']) && $params['unit_price_min'] !== '') {
            $query->where('unit_price', '>=', $params['unit_price_min']);
        }
        if (isset($params['unit_price_max']) && $params['unit_price_max'] !== '') {
            $query->where('unit_price', '<=', $params['unit_price_max']);
        }
        
        // 斤/袋搜索
        if (isset($params['jin_per_bag']) && $params['jin_per_bag'] !== '') {
            $query->where('jin_per_bag', $params['jin_per_bag']);
        }
        
        // 袋/件搜索
        if (isset($params['bags_per_piece']) && $params['bags_per_piece'] !== '') {
            $query->where('bags_per_piece', $params['bags_per_piece']);
        }
        
        // 状态搜索
        if (isset($params['status']) && $params['status'] !== '') {
            $query->where('status', $params['status']);
        }
        
        // 按页数返回结果
        return $query->paginate($params['limit'] ?? 10);
    }
} 